// 导入所需模块
import { theme } from 'antd' // Ant Design UI 库的主题模块，提供默认的浅色和深色主题。
import { IThemeConfig, NewThemeConfig } from '@/global/type' // 自定义类型，用于主题配置。
import { ThemeMode } from '@/global/constant' // 常量，表示主题的模式（浅色/深色）。

// 此函数通过将新更改与以前的配置对象合并来更新主题配置对象。
// 第一个参数是一个带有两个可选属性colorPrimary和mode的对象。
// 第二个参数是需要与新更改合并的以前的配置对象。
export function updateThemeConfig(
  { colorPrimary, mode }: IThemeConfig = {}, // 解构参数并设置默认值
  preConfig: any // 以前的配置对象
): NewThemeConfig {
  const token = colorPrimary ? { token: { colorPrimary } } : {} // 创建一个包含更新后的colorPrimary属性的新对象。
  const algorithm = mode ? { algorithm: mode } : {} // 创建一个包含更新后的mode属性的新对象。
  return { ...preConfig, ...token, ...algorithm } // 将以前的配置对象与上述步骤中创建的新对象合并。
}

// 此函数基于给定的以前的配置对象创建一个新的主题配置对象。
// 参数是以前的配置对象。
export function createNewThemeConfig(preThemeConfig: NewThemeConfig) {
  const algorithm = preThemeConfig['algorithm'] // 从以前的配置对象中提取algorithm属性。
  const newAlgorithm =
    algorithm === ThemeMode.Day ? theme.defaultAlgorithm : theme.darkAlgorithm // 根据当前主题的模式选择适当的算法（浅色或深色）。
  return { ...preThemeConfig, algorithm: newAlgorithm } // 返回具有更新的algorithm属性的新配置对象。
}
